206. Турист

 

Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая их них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.

В классе Гены k человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более w килограмм.

 

Вход. Первая строка содержит два целых числа: k и w (1 ≤ k ≤ 15, 1 ≤ w ≤ 30). Вторая строка содержит шесть целых чисел: a1, b1, a2, b2, a3, b3 (1 ≤ a1, a2, a3 ≤ 10, 1 ≤ b1, b2, b3 ≤ 15).

 

Выход. Выведите YES, если палатки указанным образом выбрать можно, и NO в противном случае.

 

Пример входа

Пример выхода

10 10

5 5 6 6 4 5

YES

 

 

РЕШЕНИЕ

элементарная задача – условный оператор

 

Анализ алгоритма

Поскольку палаток всего три, то можно рассмотреть все возможные варианты расположения учеников в палатках. То есть рассмотреть возможность расположения учеников:

·        только в первой палатке;

·        только во второй палатке;

·        только в третьей палатке;

·        только в первой и во второй палатке;

·        только в первой и в третьей палатке;

·        только во второй и в третьей палатке;

·        во всех трех палатках.

Все указанные варианты можно рассмотреть семью условными операторами. Объявим переменную flag, установим ее изначально в 0 (всех учеников поместить в палатки нельзя). Далее проверим возможность каждого из семи указанных размещений.

Например, условие возможности размещения всех учеников только во второй палатке будет выглядеть так:

if ((b2 >= k) && (a2 <= w)) flag = 1;

 

Условие возможности размещения всех учеников только в первой и третьей палатке будет выглядеть так:

if ((b1 + b3 >= k) && (a1 + a3 <= w)) flag = 1;

 

В зависимости от значения flag после проверки всех семи условий следует вывести ответ.

 

Реализация алгоритма

Реализуем перебор всех возможных вариантов расположения учеников в палатках.

 

scanf("%d %d",&k,&w);

scanf("%d %d %d %d %d %d",&a1,&b1,&a2,&b2,&a3,&b3);

if ((b1 >= k) && (a1 <= w)) flag = 1;

if ((b2 >= k) && (a2 <= w)) flag = 1;

if ((b3 >= k) && (a3 <= w)) flag = 1;

if ((b1 + b2 >= k) && (a1 + a2 <= w)) flag = 1;

if ((b1 + b3 >= k) && (a1 + a3 <= w)) flag = 1;

if ((b2 + b3 >= k) && (a2 + a3 <= w)) flag = 1;

if ((b1 + b2 + b3 >= k) && (a1 + a2 + a3 <= w)) flag = 1;

if (flag) printf("YES\n"); else printf("NO\n");